home *** CD-ROM | disk | FTP | other *** search
/ Apple Reference & Presentation Library 1993 Spring / ARPL-Spring-93-Partner-Edition.iso / Applications / Spreadsheets / Claris Resolve Demo / Resolve Samples / External Examples / Sound•Tool Source / Sound.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-07-17  |  16.5 KB  |  573 lines  |  [TEXT/MPS ]

  1. /*
  2.     Created: Tuesday, January 23, 1990 at 11:44 AM
  3.     Updated: Thursday, June 14, 1990       1:37:30 PM
  4.     
  5.     Sound.h
  6.     Pascal Interface to the Macintosh Libraries
  7.  
  8.     Contains:    additions to sound header files for multiple channels, sound input, channel status reporting
  9.  
  10.     Written by:    Neil Cormia, Hugh Svendsen, Michael Bartlow
  11.  
  12.     Copyright:    © 1988-1990 by Apple Computer, Inc., all rights reserved.
  13.  
  14.     */
  15. /*EASE$$$ WRITE PRIVILEGED COPY of file “Sound.h”
  16.  
  17.  
  18.     
  19. /*EASE$$$ VERSION: 1.2
  20. /*EASE$$$ USER: Neil J. Cormia
  21. /*EASE$$$ DATE: 08/18/1989
  22. /*EASE$$$ COMMENT:
  23. ** 1.1    CCH 11/ 9/1988 Fixed headers and removed projector resource.
  24. ** 1.0    CCH 11/ 9/1988 Adding to EASE.
  25. ** END EASE MODIFICATION HISTORY */
  26.  
  27. /************************************************************
  28.  
  29. Created: Wednesday, October 26, 1988 at 11:49 PM
  30.     Sound.h
  31.     C Interface to the Macintosh Libraries
  32.  
  33.  
  34.     Copyright Apple Computer, Inc.  1986-1988
  35.     All rights reserved
  36.  
  37. ************************************************************/
  38.  
  39.  
  40. #ifndef __SOUND__
  41. #define __SOUND__
  42.  
  43. #ifdef applec
  44. #ifndef __TYPES__
  45. #include <Types.h>
  46. #endif
  47. #else
  48. typedef double extended;
  49. #endif
  50.  
  51. #define synthCodeRsrc             'snth'
  52. #define soundListRsrc             'snd '
  53.  
  54. /* synthesizer numbers for SndNewChannel */
  55.  
  56. #define noteSynth                 1            /*note synthesizer*/
  57. #define waveTableSynth            3            /*wave table synthesizer*/
  58. #define sampledSynth             5            /*sampled sound synthesizer*/
  59.  
  60. /* Param2 values */
  61.  
  62. #define twelthRootTwo             1.05946309434
  63. #define infiniteTime             0x7FFFFFFF
  64.  
  65. /* command numbers for SndDoCommand */
  66.  
  67. #define nullCmd                    0
  68. #define initCmd                    1
  69. #define freeCmd                    2
  70. #define quietCmd                3
  71. #define flushCmd                4
  72. #define reInitCmd                5
  73.  
  74. #define waitCmd                    10
  75. #define pauseCmd                11
  76. #define resumeCmd                12
  77. #define callBackCmd                13
  78. #define syncCmd                    14
  79. #define emptyCmd                15
  80.  
  81. #define tickleCmd                20
  82. #define requestNextCmd            21
  83. #define howOftenCmd                22
  84. #define wakeUpCmd                23
  85. #define availableCmd            24
  86. #define versionCmd                25
  87. #define totalLoadCmd            26
  88. #define loadCmd                    27
  89.  
  90. #define scaleCmd                30
  91. #define tempoCmd                31
  92.  
  93. #define noteCmd                    40
  94. #define restCmd                    41
  95. #define freqCmd                    42
  96. #define ampCmd                    43
  97. #define timbreCmd                44
  98.  
  99. #define waveTableCmd            60
  100. #define phaseCmd                61
  101.  
  102. #define soundCmd                80
  103. #define bufferCmd                81
  104. #define rateCmd                    82
  105. #define    continueCmd                83            
  106. #define    doubleBufferCmd            84            
  107. #define getRateCmd                85
  108.  
  109. #define    sizeCmd                    90    
  110. #define    convertCmd                91    
  111.  
  112. #define stdQLength                128
  113. #define dataPointerFlag            0x8000
  114.  
  115. #define waveInitChannelMask        0x07
  116. #define waveInitChannel0        0x04
  117. #define waveInitChannel1        0x05
  118. #define waveInitChannel2        0x06
  119. #define waveInitChannel3        0x07
  120.  
  121. #define initSRateMask            0x0030
  122. #define initStereoMask            0x00C0
  123. #define initChanLeft             0x0002        /*left stereo channel */
  124. #define initChanRight             0x0003        /*right stereo channel*/
  125. #define initSRate22k             0x0020        /*22k sampling rate*/
  126. #define initMono                 0x0080        /*monophonic channel*/
  127. #define initStereo                 0x00C0        /*stereo channel*/
  128. #define    initNoInterp             0x0004        /*no Linear Interpolation with the SR Convert*/
  129. #define initNoSRC                0x0008
  130. #define initNoMultiChannel        0x1000
  131. #define initMACE3                0x0300
  132. #define initMACE6                0x0400
  133.  
  134. #define    stdSH                    0x00        
  135. #define    extSH                    0xFF
  136. #define    cmpSH                    0xFE
  137. #define    notCompressed            0    
  138. #define    twoToOne                1
  139. #define    eightToThree            2
  140. #define    threeToOne                3
  141. #define    sixToOne                4
  142. #define    outsideCmpSH            0
  143. #define    insideCmpSH                1
  144. #define    aceSuccess                0
  145. #define    aceMemFull                1
  146. #define    aceNilBlock                2
  147. #define    aceBadComp                3
  148. #define    aceBadEncode            4
  149. #define    aceBadDest                5
  150. #define    aceBadCmd                6
  151. #define    sixToOnePacketSize        8    
  152. #define    threeToOnePacketSize    16                
  153. #define    stateBlockSize            64
  154. #define    leftOverBlockSize        32
  155.  
  156. #define firstSoundFormat        0x0001        /* general sound format */
  157. #define secondSoundFormat        0x0002        /* special sampled sound format */
  158.  
  159.  
  160. /*typedef long                    Time;        in half milliseconds */
  161.  
  162. typedef unsigned char            Wave[256];
  163. typedef Wave                    *WavePtr;
  164.  
  165.  
  166. #define sysBeepDisable            0x0000
  167. #define sysBeepEnable            0x0001
  168.  
  169.                                             /* unitTypes for AudioSelection.unitType */
  170. #define unitTypeNoSelection        0xFFFF
  171. #define unitTypeSeconds            0x0000
  172.  
  173.                         
  174. #define    dbBufferEmpty        0x00000000        /* Constants for SndPlayDoubleBuffer*/    
  175. #define    dbBufferEmptyMask    0xFFFFFFFE
  176. #define    dbBufferReady        0x00000001
  177. #define    dbBufferExhausted    0x00000002
  178. #define    dbLastBuffer        0x00000004
  179.  
  180.  
  181. /*••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••*/
  182. /*
  183. /*            Error Codes for Sound Manager and Sound Manager 7.0
  184. /*
  185. /*••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••*/
  186.  
  187.  
  188. #define notEnoughBufferSpace    -207            /* could not allocate enough memory                 */
  189. #define badFileFormat            -208            /* was not type AIFF or was of bad format,corrupt     */
  190. #define channelBusy             -209            /* the Channel is being used for a PFD already        */
  191. #define buffersTooSmall         -210            /* can not operate in the memory allowed            */
  192. #define channelNotBusy             -211    
  193. #define noMoreRealTime             -212            /* not enought CPU cycles left to add another task */
  194. #define badParam                 -213            /* invalid argument */
  195.  
  196. /*••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••*/
  197. /*
  198. /*            Structures for Sound Driver
  199. /*
  200. /*••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••*/
  201.  
  202. typedef unsigned char FreeWave[30001];
  203.  
  204. struct FFSynthRec {
  205.     short mode;
  206.     Fixed count;
  207.     FreeWave waveBytes;
  208. };
  209.  
  210. typedef struct FFSynthRec FFSynthRec;
  211. typedef FFSynthRec *FFSynthPtr;
  212.  
  213. struct Tone {
  214.     short count;
  215.     short amplitude;
  216.     short duration;
  217. };
  218.  
  219. typedef struct Tone Tone;
  220. typedef Tone Tones[5001];
  221.  
  222. struct SWSynthRec {
  223.     short mode;
  224.     Tones triplets;
  225. };
  226.  
  227. typedef struct SWSynthRec SWSynthRec;
  228. typedef SWSynthRec *SWSynthPtr;
  229.  
  230. struct FTSoundRec {
  231.     short duration;
  232.     Fixed sound1Rate;
  233.     long sound1Phase;
  234.     Fixed sound2Rate;
  235.     long sound2Phase;
  236.     Fixed sound3Rate;
  237.     long sound3Phase;
  238.     Fixed sound4Rate;
  239.     long sound4Phase;
  240.     WavePtr sound1Wave;
  241.     WavePtr sound2Wave;
  242.     WavePtr sound3Wave;
  243.     WavePtr sound4Wave;
  244. };
  245.  
  246. typedef struct FTSoundRec FTSoundRec;
  247. typedef FTSoundRec *FTSndRecPtr;
  248.  
  249. struct FTSynthRec {
  250.     short mode;
  251.     FTSndRecPtr sndRec;
  252. };
  253.  
  254. typedef struct FTSynthRec FTSynthRec;
  255. typedef FTSynthRec *FTSynthPtr;
  256.  
  257.  
  258. /*••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••*/
  259. /*
  260. /*            Structures for Sound Manager
  261. /*
  262. /*••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••*/
  263.  
  264.  
  265. typedef struct SndCommand {
  266.     unsigned short    cmd;
  267.     short            param1;
  268.     long            param2;
  269. }SndCommand;
  270.  
  271.  
  272. typedef struct SndChannel    *SndChannelPtr;
  273. typedef /*pascal*/    void        (*SndCompletionProcPtr)(void);
  274. typedef /*pascal*/    Boolean        (*SndCallBackProcPtr)(struct SndChannel *chan, SndCommand cmd);
  275. typedef ProcPtr                SndModifierProcPtr;
  276.  
  277.  
  278.  
  279. typedef struct SoundHeader
  280. {
  281.     char                    * samplePtr;    /* if NIL then samples are in sampleArea                         */
  282.     unsigned long            length;
  283.     Fixed                    sampleRate;
  284.     unsigned long            loopStart,
  285.                             loopEnd;
  286.     unsigned char            encode;            /* <hbs 12/20/88> header type                                     */
  287.     unsigned char            baseNote;        /* <hbs 12/20/88> basenote now byte                             */
  288.     char                    sampleArea[/*0*/];
  289. } SoundHeader, *SoundHeaderPtr;
  290.  
  291.  
  292. typedef struct SndChannel {
  293.     SndChannelPtr            nextChan;
  294.     Ptr                        firstMod;
  295.     SndCallBackProcPtr        callBack;
  296.     long                    userInfo;
  297.     long                    wait;            /* The following is for internal Sound Manager use only.*/
  298.     SndCommand                cmdInProgress;
  299.     short                    flags;
  300.     short                    qLength;
  301.     short                    qHead;            /* next spot to read or -1 if empty        */
  302.     short                    qTail;            /* next spot to write = qHead if full    */
  303.     SndCommand                queue[128];
  304. } SndChannel;
  305.  
  306.  
  307. typedef struct ModifierStub {
  308.     struct ModifierStub     *nextStub;
  309.     SndModifierProcPtr         code;
  310.     long                     userInfo;
  311.     /*Time*/long                    count;
  312.     /*Time*/long                    every;
  313.     char                     flags;
  314.     char                     hState;
  315. } ModifierStub;
  316.  
  317.  
  318.  
  319. /*______________________ <hbs 1/10/89> structs for mace____________________________ */
  320.  
  321.  
  322. typedef struct{
  323.     short                        stateVar[stateBlockSize] ;
  324. }   StateBlock, *StateBlockPtr;    
  325.  
  326.  
  327. typedef struct 
  328. {
  329.     unsigned long                count;
  330.     char                        sampleArea[leftOverBlockSize];
  331. }
  332. LeftOverBlock, *LeftOverBlockPtr;
  333.  
  334.  
  335. typedef struct
  336.  {
  337.     char                 *samplePtr;            /* if nil then samples are in sample area                        */
  338.     unsigned long         numChannels;        /* CAFF, number of channels  mono = 1                             */
  339.     Fixed                sampleRate;            /* sample rate in Apples Fixed point representation                */
  340.     unsigned long         loopStart;            /* loopStart of sound before compression                        */
  341.     unsigned long         loopEnd;            /* loopEnd of sound before compression                            */
  342.     unsigned char         encode;                /* data structure used ,  stdSH, extSH, or cmpSH                */
  343.     unsigned char         baseNote;            /* same meaning as regular SoundHeader                            */
  344.     unsigned long         numFrames;            /* length in frames    ( packetFrames or sampleFrames                */
  345.     extended             AIFFSampleRate;        /* CAFF, IEEE sample rate                                         */
  346.     Ptr                 MarkerChunk;        /* CAFF, sync track                                                */
  347.     Ptr                 FutureUse1;            /* reserved by Apple                                            */
  348.     Ptr                     FutureUse2;            /* reserved by Apple                                            */
  349.     StateBlockPtr         StateVars;            /* pointer to State Block                                         */    
  350.     LeftOverBlockPtr     LeftOverSamples;    /* used to save truncated samples between compression calls       */
  351.     unsigned short        compressionID;        /* 0 means no compression, non zero means compressionID            */
  352.     unsigned short         packetSize;            /* CAFF, number of bits in compressed sample packet                */    
  353.     unsigned short         snthID;                /* Resource ID of Sound Manager snth that contains NRT C/E        */
  354.     unsigned short         sampleSize;            /* CAFF, number of bits in non-compressed sample                 */
  355.     char                 sampleArea[/*0*/];        /* space for when samples follow directly                        */        
  356. }    
  357. CmpSoundHeader, *CmpSoundHeaderPtr;
  358.  
  359. typedef struct
  360.  {
  361.     char                 *samplePtr;            /* if nil then samples are in sample area                        */
  362.     unsigned long         numChannels;        /* AIFF, number of channels,  ie mono = 1                         */
  363.     Fixed                sampleRate;            /* sample rate in Apples Fixed point representation                */
  364.     unsigned long         loopStart;            /* same meaning as regular SoundHeader                            */    
  365.     unsigned long         loopEnd;            /* same meaning as regular SoundHeader                            */
  366.     unsigned char         encode;                /* data structure used ,  stdSH, extSH, or cmpSH                */
  367.     unsigned char         baseNote;            /* same meaning as regular SoundHeader                            */
  368.     unsigned long         numSampleFrames;    /* length in total number of frames                                */
  369.     extended             AIFFSampleRate;        /* AIFF, IEEE sample rate                                         */
  370.     Ptr                 MarkerChunk;        /* AIFF, sync track                                                */
  371.     Ptr                 InstrumentChunks;    /* AIFF,                                                         */
  372.     Ptr                 AESRecording;        /* AIFF,                                                         */
  373.     unsigned short         sampleSize;            /* AIFF, number of bits in sample                                 */
  374.     unsigned short         FutureUse1;            /* reserved by Apple                                            */    
  375.     unsigned long         FutureUse2;            /* reserved by Apple                                            */    
  376.     unsigned long         FutureUse3;            /* reserved by Apple                                            */    
  377.     unsigned long         FutureUse4;            /* reserved by Apple                                            */
  378.     char                 sampleArea[/*0*/];        /* space for when samples follow directly                        */        
  379. }    
  380. ExtSoundHeader, *ExtSoundHeaderPtr;
  381.  
  382.  
  383.  
  384. typedef struct{
  385.     short                smMaxCPULoad;
  386.     short                smNumChannels;
  387.     short                smCurCPULoad;
  388. }
  389. SMStatus, *SMStatusPtr;
  390.  
  391.  
  392. typedef struct{ 
  393.     Fixed                scStartTime;
  394.     Fixed                scEndTime;
  395.     Fixed                scCurrentTime;
  396.     Boolean                scChannelBusy;
  397.     Boolean                scChannelDisposed;
  398.     Boolean                scChannelPaused;
  399.     char                scUnused;
  400.     unsigned long        scChannelAttributes;
  401.     long                scCPULoad;
  402. }
  403. SCStatus,*SCStatusPtr;
  404.  
  405.  
  406. typedef struct {
  407.     long                dbNumFrames;
  408.     long                dbFlags;
  409.     long                dbUserInfo[2];
  410.     char                dbSoundData[/*0*/];
  411. } SndDoubleBuffer, *SndDoubleBufferPtr;
  412.  
  413.  
  414. typedef struct{ 
  415.     long                unitType;
  416.     Fixed                selStart;
  417.     Fixed                selEnd;
  418. }AudioSelection, *AudioSelectionPtr;
  419.  
  420.  
  421. typedef struct {
  422.     short                dbhNumChannels;
  423.     short                dbhSampleSize;
  424.     short                dbhCompressionID;
  425.     short                dbhPacketSize;
  426.     Fixed                dbhSampleRate;
  427.     SndDoubleBufferPtr    dbhBufferPtr[2];
  428.     ProcPtr                dbhDoubleBack;
  429. }
  430. SndDoubleBufferHeader, *SndDoubleBufferHeaderPtr;
  431.  
  432. typedef struct ModRef {
  433.     unsigned short modNumber;
  434.     long modInit;
  435. } ModRef;
  436.  
  437.  
  438. typedef struct SndListResource {
  439.     short format;
  440.     short numModifiers;
  441.     ModRef modifierPart[1];         /*This is a variable length array*/
  442.     short numCommands;
  443.     SndCommand commandPart[1];      /*This is a variable length array*/
  444.     char dataPart[1];               /*This is a variable length array*/
  445. } SndListResource, *SndListPtr;
  446.  
  447.  
  448. pascal OSErr SndDoCommand(SndChannelPtr chan,/*??const*/ SndCommand *cmd,Boolean noWait)
  449.     = 0xA803; 
  450. pascal OSErr SndDoImmediate(SndChannelPtr chan,/*??const*/ SndCommand *cmd)
  451.     = 0xA804; 
  452. pascal OSErr SndNewChannel(SndChannelPtr *chan,short synth,long init,SndCallBackProcPtr userRoutine)
  453.     = 0xA807; 
  454. pascal OSErr SndDisposeChannel(SndChannelPtr chan,Boolean quietNow)
  455.     = 0xA801; 
  456. pascal OSErr SndPlay(SndChannelPtr chan,Handle sndHdl,Boolean async)
  457.     = 0xA805; 
  458. pascal OSErr SndControl(short id,SndCommand *cmd)
  459.     = 0xA806;
  460.  
  461.  
  462. /*••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••*/
  463. /*
  464. /*            New Enhanced Sound Manager 7.0 Calls    <18 Aug 1989 NJC>
  465. /*
  466. /*            These will soon be supported by a Glue Library so that all this ugly
  467. /*            shit will disappear and the traps will look like non-indexed traps.
  468. /*
  469. /*••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••*/
  470.  
  471. #define    MOVEL                        0x203C    
  472.  
  473. /* constants for MACE in the dispatcher */
  474. #define    MACEToolNum                    16        
  475. #define    sMgrMACEVersion                 0
  476. #define sMgrComp3to1                 4
  477. #define sMgrExp1to3                     8
  478. #define sMgrComp6to1                12
  479. #define sMgrExp1to6                    16
  480.  
  481. /* constants for Sound Manager Extensions in the dispatcher */
  482. #define sMgrToolNum                     8        
  483. #define    sMgrSndStartFilePlay        3328        /*  (13*256)+0 */
  484. #define    sMgrSndPauseFilePlay        516            /* (2*256)+4 */
  485. #define    sMgrSndStopFilePlay            776            /* (3*256)+8 */
  486. #define    sMgrSndSoundManagerVersion    12
  487. #define    sMgrSndChannelStatus        16
  488. #define    sMgrSndManagerStatus        20
  489. #define    sMgrSndGetSysBeepState        24
  490. #define    sMgrSndSetSysBeepState        28
  491. #define    sMgrSndPlayDoubleBuffer        32
  492. #define    sMgrSndGetBufferStufferLoad    36
  493. #define    sMgrSndGetMixerLoad            40
  494.  
  495. pascal unsigned long 
  496. SndSoundManagerVersion (void)
  497.     = {MOVEL,sMgrSndSoundManagerVersion,sMgrToolNum,0xA800};
  498.  
  499. pascal OSErr
  500. SndStartFilePlay ( SndChannelPtr theChannel, short fRefNum,
  501.             short resNum, long bufferSize, Ptr bufferPtr,
  502.             AudioSelectionPtr theSelection, ProcPtr theCompletion, Boolean async)
  503.     = {MOVEL,sMgrSndStartFilePlay,sMgrToolNum,0xA800};
  504.  
  505. pascal OSErr
  506. SndPauseFilePlay (SndChannelPtr theChannel)
  507.     = {MOVEL,sMgrSndPauseFilePlay,sMgrToolNum,0xA800};
  508.  
  509. pascal OSErr
  510. SndStopFilePlay (SndChannelPtr theChannel, Boolean noWait)
  511.     = {MOVEL,sMgrSndStopFilePlay,sMgrToolNum,0xA800};
  512.     
  513. pascal OSErr 
  514. SndChannelStatus (SndChannelPtr theChannel, 
  515.                 short theLength, SCStatusPtr theStatus)
  516.     = {MOVEL,sMgrSndChannelStatus,sMgrToolNum,0xA800};
  517.     
  518. pascal OSErr 
  519. SndManagerStatus (short theLength, SMStatusPtr theStatus)
  520.     = {MOVEL,sMgrSndManagerStatus,sMgrToolNum,0xA800};
  521.     
  522. pascal void 
  523. SndGetSysBeepState ( short *sysBeepState)
  524.     = {MOVEL,sMgrSndGetSysBeepState,sMgrToolNum,0xA800};
  525.  
  526. pascal OSErr 
  527. SndSetSysBeepState (short sysBeepState)
  528.     = {MOVEL,sMgrSndSetSysBeepState,sMgrToolNum,0xA800};
  529.  
  530. pascal OSErr
  531. SndPlayDoubleBuffer ( SndChannelPtr theChannel, SndDoubleBufferHeaderPtr theParams)
  532.     = {MOVEL,sMgrSndPlayDoubleBuffer,sMgrToolNum,0xA800};
  533.  
  534. pascal short 
  535. SndGetBufferStufferLoad (short channelFeatures)
  536.     = {MOVEL,sMgrSndGetBufferStufferLoad,sMgrToolNum,0xA800};
  537.  
  538. pascal short 
  539. SndGetMixerLoad (short numChannels)
  540.     = {MOVEL,sMgrSndGetMixerLoad,sMgrToolNum,0xA800};
  541.  
  542. pascal unsigned long
  543. MACEVersion ()
  544.     = {MOVEL,sMgrMACEVersion,MACEToolNum,0xA800};
  545.  
  546. pascal void Comp3to1 ( Ptr inBuffer, Ptr outBuffer, unsigned long  Cnt, Ptr inState,
  547.         Ptr outState, unsigned long  numChannels, unsigned long  whichChannel )
  548.     = {MOVEL,sMgrComp3to1,MACEToolNum,0xA800};
  549.  
  550. pascal void Exp1to3 ( Ptr inBuffer, Ptr outBuffer, unsigned long  Cnt, Ptr inState, 
  551.         Ptr outState, unsigned long  numChannels, unsigned long  whichChannel)
  552.     = {MOVEL,sMgrExp1to3,MACEToolNum,0xA800};
  553.  
  554. pascal void Comp6to1 ( Ptr inBuffer, Ptr outBuffer, unsigned long  Cnt, Ptr inState, 
  555.         Ptr outState, unsigned long  numChannels, unsigned long  whichChannel )
  556.     = {MOVEL,sMgrComp6to1,MACEToolNum,0xA800};
  557.  
  558. pascal void Exp1to6 ( Ptr inBuffer, Ptr outBuffer, unsigned long  Cnt, Ptr inState,
  559.         Ptr outState, unsigned long  numChannels, unsigned long  whichChannel)
  560.     = {MOVEL,sMgrExp1to6,MACEToolNum,0xA800};
  561.  
  562.  
  563. pascal void SetSoundVol(short level); 
  564. pascal void GetSoundVol(short *level); 
  565. pascal void StartSound(Ptr synthRec,long numBytes,SndCompletionProcPtr completionRtn); 
  566. pascal void StopSound(void); 
  567. pascal Boolean SoundDone(void); 
  568. pascal OSErr SndAddModifier(SndChannelPtr chan,SndModifierProcPtr modifier,
  569.     short id,long init)
  570.     = 0xA802; 
  571.  
  572.  
  573. #endif